package com.tedu.api.list;

import org.junit.Test;

import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;

/**
 * 存放相同的数据---->数组
 * 数组定义：int[] i=new int[10];      定长
 * 需求：存898个元素，不限制任意类型【基本数据类型|引用类型】
 * 用集合解决上述问题
 * 集合：存不确定的元素数，存任意类型【或限定类型】【重点*****】
 * 包的位置：java.util
 * Collection  顶级容器   接口
 * 作用：集合中提供了所有容器的通用方法，维护元素，操作元素！
 *
 * Collection 顶级接口----创建对象，两个常用子接口：
 * List集合【接口】：可重复集合，并且有序【存储特点】
 *   List子接口下：ArrayList  数组集合
 * Set集合【接口】：不可重复集合【存储特点】
 *
 * 创建顶级结合对象----多态----接口    引用=new  子接口【实现类】()
 *
 *
 */
public class CollectionAPI {
   /**
    * Collection  对象方法
    * add()方法        返回值：Boolean
    * 语法：add(任何类型元素)
    * 作用：向当前的集合中添加给定元素，可以为任何元素！
    *      如果元素存入成功，返回true；元素存入失败，返回false
    * size()方法       返回值：int
    * 作用 ：返回集合的个数-----【数组长度length：返回数组长度】
    * isEmpty()方法    返回值：Boolean
    * 作用：判断元素是否为空，返回集合元素有值【不是空】，返回值false
    *                              没有值【是空的】，返回值true
    * clear()方法      返回值：void
    * 作用：清空集合元素
    */


   @Test
   public void testCollection(){
         //创建顶级集合【容器】：集合不定长，无限制【集合尽量存相同数据】
       Collection c=new ArrayList();
       c.add("one");
       c.add(2);
       c.add(new Frame());
       c.add(true);
       c.add('1');
       c.add(1.2);
       System.out.println("打印容器【顶级集合】："+c);
       System.out.println("打印集合个数："+c.size());
         //c.clear();   //清空元素
       boolean b=c.isEmpty();
       System.out.println("集合中是否存在元素："+b);


     }
    /**
     * remove()         返回值：boolean
     * 作用：从集合中删除给定元素，如果删除元素重复，只删除匹配第一元素数据
     *      底层：使用equals方法判断删除元素
     */
    @Test
    public void testRemove(){
      Collection c=new ArrayList<>();
      c.add("2");c.add("3");c.add("d");
      c.add("3");c.add("4");c.add("5");
      System.out.println("集合元素："+c);
      c.remove("3");
      System.out.println("删除集合元素："+c);
      }
    /**
     * addAll(Collection c)方法       返回值：boolean
     * 作用：将给定集合中所有的元素添加到另外一个集合中，当添加完毕后
     *     返回值true
     */
    @Test
    public void testAll() {
      //创建第一个集合
        Collection c1 = new ArrayList();
        c1.add("web");
        c1.add("java");
        c1.add("c");
      //创建第二个集合
        Collection c2 = new ArrayList();
        c2.add("go");
        c2.add("php");
        c2.add("net");
      //并集  c1集合元素添加到c2集合元素当中
        boolean b = c1.addAll(c2);
        System.out.println("并集是否成功：" + b);
        System.out.println("并集结果：" + c1);
    }
        /**
         * containsAll()    返回值：boolean
         * 作用：判断当前集合是否包含给定集合中的所有元素
         * 判断：两个集合所有的元素是否一致【存入顺序无关】
         *      true    两个集合元素【完全一致】
         *      false   两个集合元素【可能部分元素不一致】
         */
        @Test
        public void testContainsAll(){
            Collection c1=new ArrayList();
            c1.add("go");c1.add("java");
            Collection c2=new ArrayList();
            c2.add("java");c2.add("g0");
            //判断：c1集合是否包含c2集合【集合存入元素顺序不一致】
            boolean b=c1.containsAll(c2);
            System.out.println("c1集合是否包含c2集合元素："+b);
        }
        /**
         * removeAll(Collection c)  返回值：boolean
         * 作用：删除当前集合中与给定集合中共有元素【交集】
         */
        @Test
        public void testRemoveAll(){
            Collection c1=new ArrayList();
            c1.add("1");c1.add("2");c1.add("3");
            Collection c2=new ArrayList();
            c2.add("3");c2.add("2");c2.add("1");
            boolean b=c1.removeAll(c2);
            System.out.println("交集是否成功："+b);  //true
            System.out.println("交集集合结果："+c1);  //[ ]
        }
    }



